/**
 * Copyright (C), 2001-2023, www.bosssof.com.cn
 * FileName: BaseEntity
 * Author: Administrator
 * Date: 2023-03-31 08:05:59
 * Description:  定义了持久层PO的基类，包含业务表的公共字段
 * <p>
 * History:
 * <author> Administrator
 * <time> 2023-03-31 08:05:59
 * <version> 1.0.0
 * <desc> 版本描述
 */
package com.bosssoft.usercenter.base;

import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import tk.mybatis.mapper.annotation.Version;

import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.io.Serializable;
/**
 * @ClassName: BaseEntity
 * @Description: 所有的PO都集成该类,实现序列化的接口
 * @Author: Administrator
 * @Date: 2023-03-31 08:05
 **/

@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@ApiModel("对应数据库表的公共字段")
public abstract class BaseEntity implements Serializable{
    private static final long serialVersionUID = 6096976488575731777L;
    /**
     *  id 雪花算法生成对应行的记录id
     *  这个是主键定义要备注@id 否则 deleteByPrimaryKey不认为他的主键
     */
    @NotNull(message = "记录id不能为空")
    @Id
    private Long id;
    /**
     *  创建人用于跟踪谁创建也用于按人员查询数据
     */
    @NotNull(message = "创建人不能为空")
    private Long createdBy;
    /**
     *  记录被创建的时间
     */
    @NotNull(message = "创建时间不能为空")
    private Date createdTime;
    /**
     *  更新人
     */
    @NotNull(message = "修改人不能为空")
    private Long updatedBy;

    /**
     *  更新时间
     */
    @NotNull(message = "修改时间不能为空")
    private Date updatedTime;

    /**
     *  状态 具体参考常量
     */
    @NotNull(message = "修改状态不能为空")
    private Byte status;
    /**
     *  版本 初始为1 由mybatis 插件自动维护
     */
    @Version
    private Long version;

}
